package com.zx.练习题._2022面试题收集;

/**
 * 二分查找也称折半查找（Binary Search），它是一种效率较高的查找方法。但是，折半查找要求线性表必须采用顺序存储结构，而且表中元素按关键字有序排列
 */
public class 二分查询 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7};
        System.out.println(find(arr, 2));
        System.out.println(find(arr, 1));
        System.out.println(find(arr, 7));
        System.out.println(find(arr, 10));
    }

    private static boolean find(int[] arr, int num) {
        int begin = 0;
        int end = arr.length - 1;

        boolean bianjie = true;
        while (bianjie) {
            if (begin == end) {
                bianjie = false;
            }

            int mid = (begin + end) / 2;
            if (arr[mid] == num) {
                return true;
            } else if (arr[mid] > num) {
                begin = begin;
                end = mid - 1;
            } else {
                begin = mid + 1;
                end = end;
            }
        }

        return false;

    }


}
